

package com.restauranteejb.utiles;

import Facade.RestFacadeRemote;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import restaurante.entidades.Cargos;
import restaurante.entidades.Cliente;
import restaurante.entidades.Mesa;
import restaurante.entidades.Producto;
/**
 *
 * @author Omar Antonio Yarleque Peña
 */

public class GestionDelegate {
    private String _host;
    private String _port;
    private InitialContext _ic;

    private RestFacadeRemote arm;
    public GestionDelegate( String host, String port ) {
        _host = host;
        _port = port;
    }

    public RestFacadeRemote callGestionFacade(){
        RestFacadeRemote sless = null;
        try {

            sless = (RestFacadeRemote) _ic.lookup("RestFacadeBean");
            System.out.println( "Servicio Iniciado" );
        } catch (NamingException ex) {
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error en la llamada del servicio" );
        }
        return sless;
    }

    /*********************************************/
    public void setHost( String host ){
        _host = host;
    }

    public void setPort( String port ){
        _port = port;
    }

    public void inicializaContexto() throws NamingException{
        Properties properties = new Properties();
        properties.setProperty("org.omg.CORBA.ORBInitialHost", _host);
        properties.setProperty("org.omg.CORBA.ORBInitialPort", _port);
        _ic = new InitialContext( properties );
    }

    public void getServicio(){
        try {
            this.inicializaContexto();
        } catch (NamingException ex) {
            Logger.getLogger(GestionDelegate.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println( "Error al inicializar servicio" );
        }
        arm = callGestionFacade();
    }
    
    ////METODOS PARA MANTENIMIENTO DE CLIENTES
    public boolean registraCliente(Cliente cli){
        return arm.registrarCliente(cli);
    }
    public List<Cliente> listarCliente(){
        return arm.listaClientes();
    }
    public int genCodCliente(){
        return  arm.genCodCliente();
    }
    public Cliente getCliente(String id){
        return arm.getCliente(id);
    }
    public void removeCli(Cliente cli){
         arm.eliminarCli(cli);
    }
    public void ModificaCli(Cliente cli){
        arm.ModificarCli(cli);
    }
    public List<Cliente> busSenCli(String cadBus){
        return arm.buscaCli(cadBus);
    }
    
    ////METODOS PARA MANTENIMIENTO DE PRODUCTOS
    public List<Producto> listarProducto(){
        return arm.listarProducto();
    }
    public boolean registrarProducto(Producto pro){
        return arm.registrarProducto(pro);
    }
    public int genCodProducto(){
        return arm.genCodProducto();
    }
    public void modificarPro(Producto pro){
        arm.ModificarPro(pro);
    }
    public void removePro(Producto pro){
        arm.eliminarPro(pro);
    }
    public Producto getProducto(Integer id){
        return arm.getProducto(id);
    }
    public List<Producto> buscaCoin(String cad){
        return arm.buscaCoin(cad);
    }    
    public List<Mesa> listarMesa(){
        return arm.listarMesas();
    }
}

